//package oc.tm.sg.admin.web.service.impl;
//
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.List;
//import java.util.Map;
//
//import cn.sunline.ltts.apm.dubbo.monitor.po.DubboInvoke;
//import cn.sunline.ltts.apm.dubbo.monitor.po.DubboInvokeLineChart;
//import cn.sunline.ltts.apm.dubbo.monitor.po.LineChartSeries;
//import cn.sunline.ltts.apm.dubbo.monitor.service.TopNService;
//
//import com.google.common.collect.Lists;
//
///**
// * TOP N控制器
// * @author lry
// */
//public class TopNServiceImpl implements TopNService {
//
//    /**
//     * 获取TOP N数据
//     * @param dubboInvoke
//     * @param topN
//     * @return
//     */
//    public List<DubboInvokeLineChart> loadTopDate(DubboInvoke dubboInvoke,Integer topN) {
//        @SuppressWarnings("rawtypes")
//		Map dubboInvokeMap = dubboMonitorService.countDubboInvokeTopTen(dubboInvoke,topN);
//        
//        List<DubboInvokeLineChart> dubboInvokeLineChartList = new ArrayList<DubboInvokeLineChart>();
//        
//        /**
//         * 图一：统计服务提供者成功调用TOP20
//         */
//        /*DubboInvokeLineChart successDubboInvokeLineChart = new DubboInvokeLineChart();
//        List<String> sxAxisCategories = Lists.newArrayList();
//        LineChartSeries slineChartSeries = new LineChartSeries();
//        List<double[]> sdataList = Lists.newArrayList();
//        double[] data;
//        //读取调度成功的数据
//        @SuppressWarnings("unchecked")
//		List<DubboInvoke> success = (List<DubboInvoke>) dubboInvokeMap.get("provider.success");
//        for (DubboInvoke di : success) {
//            sxAxisCategories.add(di.getMethod());
//            data = new double[]{di.getSuccess()};
//            sdataList.add(data);
//        }
//        slineChartSeries.setData(sdataList);
//        slineChartSeries.setName("provider");
//
//        successDubboInvokeLineChart.setxAxisCategories(sxAxisCategories);
//        successDubboInvokeLineChart.setSeriesData(Arrays.asList(slineChartSeries));
//        successDubboInvokeLineChart.setChartType("PROVIDER-SUCCESS");
//        successDubboInvokeLineChart.setTitle("Provider供应成功Top "+topN);//设置表标题
//        successDubboInvokeLineChart.setyAxisTitle("次");
//
//        dubboInvokeLineChartList.add(successDubboInvokeLineChart);
//        */
//        
//        /**
//         * 图二：统计服务提供者失败调用TOP20
//         */
//        /*DubboInvokeLineChart failureDubboInvokeLineChart = new DubboInvokeLineChart();
//        List<String> fxAxisCategories = Lists.newArrayList();
//        LineChartSeries flineChartSeries = new LineChartSeries();
//        List<double[]> fdataList = Lists.newArrayList();
//        
//        //读取调度失败的数据
//        @SuppressWarnings("unchecked")
//		List<DubboInvoke> failure = (List<DubboInvoke>) dubboInvokeMap.get("provider.failure");
//        for (DubboInvoke di : failure) {
//            fxAxisCategories.add(di.getMethod());
//            data = new double[]{di.getFailure()};
//            fdataList.add(data);
//        }
//        flineChartSeries.setData(fdataList);
//        flineChartSeries.setName("provider");
//
//        failureDubboInvokeLineChart.setxAxisCategories(fxAxisCategories);
//        failureDubboInvokeLineChart.setSeriesData(Arrays.asList(flineChartSeries));
//        failureDubboInvokeLineChart.setChartType("PROVIDER-FAILURE");
//        failureDubboInvokeLineChart.setTitle("Provider供应失败Top "+topN);
//        failureDubboInvokeLineChart.setyAxisTitle("次");
//        
//        dubboInvokeLineChartList.add(failureDubboInvokeLineChart);
//        */
//        
//        
//        /**
//         * 图三：统计服务消费者成功调用TOP20
//         */
//        DubboInvokeLineChart successDubboInvokeLineChartConsumer = new DubboInvokeLineChart();
//        List<String> sxAxisCategoriesConsumer = Lists.newArrayList();
//        LineChartSeries slineChartSeriesConsumer = new LineChartSeries();
//        List<double[]> sdataListConsumer = Lists.newArrayList();
//        double[] dataConsumer;
//        //读取调度成功的数据
//        @SuppressWarnings("unchecked")
//		List<DubboInvoke> consumerSuccess = (List<DubboInvoke>) dubboInvokeMap.get("consumer.success");
//        for (DubboInvoke di : consumerSuccess) {
//            sxAxisCategoriesConsumer.add(di.getMethod());
//            dataConsumer = new double[]{di.getSuccess()};
//            sdataListConsumer.add(dataConsumer);
//        }
//        slineChartSeriesConsumer.setData(sdataListConsumer);
//        slineChartSeriesConsumer.setName("consumer");
//
//        successDubboInvokeLineChartConsumer.setXaxisCategories(sxAxisCategoriesConsumer);
//        successDubboInvokeLineChartConsumer.setChartType("CONSUMER-SUCCESS");//设置图标类型
//        successDubboInvokeLineChartConsumer.setSeriesData(Arrays.asList(slineChartSeriesConsumer));//设置y轴数据
//        successDubboInvokeLineChartConsumer.setTitle("服务消费成功 Top "+topN);//设置表标题
//        successDubboInvokeLineChartConsumer.setXaxisTitle("服务方法");//设置x轴标题
//        successDubboInvokeLineChartConsumer.setYaxisTitle("消费成功次数 (次)");//设置y轴的标题
//        successDubboInvokeLineChartConsumer.setDateUnit("次");
//        dubboInvokeLineChartList.add(successDubboInvokeLineChartConsumer);
//        
//        /**
//         * 图四：统计服务消费者失败调用TOP20
//         */
//        DubboInvokeLineChart failureDubboInvokeLineChartConsumer = new DubboInvokeLineChart();
//        List<String> fxAxisCategoriesConsumer = Lists.newArrayList();
//        LineChartSeries flineChartSeriesConsumer = new LineChartSeries();
//        List<double[]> fdataListConsumer = Lists.newArrayList();
//        
//        //读取调度失败的数据
//        @SuppressWarnings("unchecked")
//		List<DubboInvoke> failureConsumer = (List<DubboInvoke>) dubboInvokeMap.get("consumer.failure");
//        for (DubboInvoke di : failureConsumer) {
//            fxAxisCategoriesConsumer.add(di.getMethod());
//            dataConsumer = new double[]{di.getFailure()};
//            fdataListConsumer.add(dataConsumer);
//        }
//        flineChartSeriesConsumer.setData(fdataListConsumer);
//        flineChartSeriesConsumer.setName("consumer");
//
//        failureDubboInvokeLineChartConsumer.setXaxisCategories(fxAxisCategoriesConsumer);
//        failureDubboInvokeLineChartConsumer.setChartType("CONSUMER-FAILURE");//设置图标类型
//        failureDubboInvokeLineChartConsumer.setSeriesData(Arrays.asList(flineChartSeriesConsumer));//设置y轴数据
//        failureDubboInvokeLineChartConsumer.setTitle("服务消费失败 Top "+topN);//设置表标题
//        failureDubboInvokeLineChartConsumer.setXaxisTitle("服务方法");//设置x轴标题
//        failureDubboInvokeLineChartConsumer.setYaxisTitle("消费失败次数 (次)");//设置y轴的标题
//        failureDubboInvokeLineChartConsumer.setDateUnit("次");
//        dubboInvokeLineChartList.add(failureDubboInvokeLineChartConsumer);
//
//        return dubboInvokeLineChartList;
//    }
//    
//}
